home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
ELECTRON
/
PCB_DESI
/
H027.ZIP
/
TOOLS.EXE
/
lha
/
GERBLAYO.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1990-11-21
|
5KB
|
210 lines
program gerblayo;
{ converteer gerber files naar layo1 .BNK bestand }
uses crt,dos;
const
layer : byte = 1;
type
woord80 = string[80];
arrtypint = array[0..32500] of integer;
arrtypbyt = array[0..32500] of byte;
var
ch : char;
w1:woord80;
hoogsteregel : word;
xpositie,
ypositie : ^arrtypint;
sympen : ^ arrtypbyt;
procedure save_bnk;
type
lrec = record b,s:byte; x,y:integer; end;
var
rec : lrec; f1 : file of lrec; i:word;
begin
w1 := '';
if paramstr(2) >= '' then assign(f1,paramstr(2)) else
begin
write('Type : destination filename with extension .BNK ');
readln(w1);
assign(f1,w1);
end;
{$i-} Rewrite(f1); {$i+}
i := ioresult;
if i <> 0 then
begin
write('IOERROR ',i,' Progamm aborted...');
ch := readkey;
halt;
end;
for i:=1 to hoogsteregel do
begin
rec.b:= 0;
rec.s:=sympen^[i];
rec.x:=xpositie^[i];
rec.y:=ypositie^[i];
write(f1,rec);
end;
close(f1);
end;
procedure init;
var
i:word;
begin
hoogsteregel := 0;
new(xpositie);
new(ypositie);
new(sympen);
for i := 0 to 32500 do
begin
xpositie^[i] := 0;
ypositie^[i] := 0;
sympen^[i] := 0;
end;
end;
procedure lees_inf;
var
f1:text;
begin
clrscr;
assign(f1,paramstr(1));
reset(f1);
while not eof(f1) do
begin
readln(f1,w1);
writeln(w1);
end;
close(f1);
end;
{
D01* = PEN DOWN
D02* = PEN UP
D03* = FLASH
D10* = PEN 1
D11* = PEN 2
D12* = PEN 3
D13* = PEN 4
D14* = PEN 5
D15* = PEN 6
D17* = PEN 7
D20* = PAD 0
D21* = PAD 7
D
procedure mess(w:woord80);
begin
writeln(#13#10,w);
halt;
end;
procedure load_gerber;
var
f1:text;
nummer : char;
xs,ys,ds : string[20];
xr,yr:real;
i,x,y : integer;
sp : byte;
pen,pad:word;
begin
ds := paramstr(3);
if ds = '' then ds := '1';
val(ds,layer,i);
writeln(#10#10#13,'Reading ',paramstr(1));
assign(f1,paramstr(1));
{$i-} reset(f1); {$I+}
if ioresult <> 0 then
begin
writeln('File not open...');
halt;
end;
while not eof(f1) do
begin
readln(f1,w1);
{ writeln('Gelezen van F1 = ',w1);}
if length(w1) > 0 then
begin
if w1[1] = 'D' then
begin
ds := copy(w1,2,pos('*',w1)-2);
val(ds,sp,i);
case sp of
10 : pen :=1;
11 : begin pen := 2; pad := 0; end;
12 : begin pen := 3; pad := 7; end;
13 : begin pen := 4; pad := 8; end;
14 : begin pen := 5; pad := 9; end;
15 : begin pen := 6; pad := 10; end;
16 : begin pen := 7; pad := 11; end;
17 : begin pen := 0; pad := 12; end;
18 : begin pen := 0; pad := 13; end;
19 : begin pen := 0; pad := 14; end;
70 : begin pen := 0; pad := 15; end;
71 : begin pen := 0; pad := 0; end;
end;
{ writeln('PEN = ',pen,' PAD = ',pad); }
{ ch := readkey; }
end;
if w1[1] = 'X' then
begin
if hoogsteregel < 30000 then inc(hoogsteregel) else mess('full');
xs := copy(w1,2,pos('Y',w1)-2);
ys := copy(w1,pos('Y',w1)+1,pos('D',w1) - pos('Y',w1)-1);
ds := copy(w1,pos('D',w1)+1,pos('*',w1) - pos('D',w1)-1);
if ((xs[1] = '-') or (xs[1] = '+')) and (pos('.',xs) = 0)
then insert('.',xs,4);
if ((ys[1] = '-') or (ys[1] = '+')) and (pos('.',ys) = 0)
then insert('.',ys,4);
if pos('.',xs) = 0 then insert('.',xs,3);
if pos('.',ys) = 0 then insert('.',ys,3);
{ writeln(#13#10' XS =',xs,' YS =',ys,' DS =',ds); }
val(xs,xr,x);
val(ys,yr,y);
x := round(xr * 1280);
y := round(yr * 1280);
{ writeln(hoogsteregel,' X = ',x,' Y = ',y,' ',ds);}
xpositie^[hoogsteregel] := x;
ypositie^[hoogsteregel] := y;
if ds = '01' then
sympen^[hoogsteregel] := (layer shl 3) + pen {pd} else
if ds = '02' then
sympen^[hoogsteregel] := (layer shl 3) {pu} else
if ds = '03' then sympen^[hoogsteregel] := $80 + (pad shl 3);
end;
end;
end;
close(f1);
end;
begin
if paramcount < 2 then
begin
clrscr;
writeln('type GERBLAYO source destination layer');
writeln;
writeln('Example : gerblayo a:\demo.g01 c:\layo1p\demo.bnk');
writeln;
halt;
end;
init;
{ lees_inf; } {pads + pendiktes}
load_gerber;
save_bnk;
writeln('ok...');
end.